package cn.chinaunicom.sdsi.frm.workflow.task.dao;

import java.util.List;

import cn.chinaunicom.sdsi.frm.workflow.bean.HistoicFlowVO;

/**
 * 流程流转历史接口
 * 
 * @author liyh
 */
public interface FlowHistoryDao {

	/**
	 * 据流程实例ID查到流转历史
	 * 
	 * @param procInsId
	 *            流程实例ID
	 * @return 流转历史集合
	 */
	List<HistoicFlowVO> findFlowHistory(String procInsId);

	/**
	 * 根据流程实例ID及历史任务ID获取流转历史记录
	 * 
	 * @param processInstanceId
	 *            实例ID
	 * @param taskId
	 *            任务ID
	 * @return 历史任务实体
	 */
	HistoicFlowVO findFlowHistory(String processInstanceId, String taskId);

	/**
	 * 插入完整环节流转历史
	 * 
	 * @param hfo
	 *            流转历史信息
	 * @return 插入数据的条数
	 */
	int insertWholeFlowHistory(HistoicFlowVO hfo);

	/**
	 * 插入新生环节流转历史部分信息，较完整环节流转历史缺少处理方式、结束时间及评论
	 * 
	 * @param hfo
	 *            流转历史信息
	 * @return 插入数据的条数
	 */
	int insertNewFlowHistory(HistoicFlowVO hfo);

	/**
	 * 补全当前环节处理信息，包含处理时间、处理类型及评论内容
	 * 
	 * @param hfo
	 *            流转历史信息
	 * @return 更新的数据条数
	 */
	int supplementaryFlowHistory(HistoicFlowVO hfo);

	/**
	 * 针对撤回功能需要额外处理处理人的信息
	 * 
	 * @param hfo
	 *            流转历史信息
	 * @return 更新的数据条数
	 */
	int updateAssigneeForWithdraw(HistoicFlowVO hfo);

	/**
	 * 浏览待办后，为上环节处理人不可撤回打标
	 * 
	 * @param processInstanceId
	 *            实例ID
	 * @param taskId
	 *            任务ID
	 * @return 更新记录数，正常为1
	 */
	int signTask(String processInstanceId, String taskId);
}
